#include <stdarg.h>
/* Some definitions and declaration to make the code work */
#define IO 01
#define USART 02
#define LCD 03
#define set_portB 1
struct __port__ { int set; } ;
struct __io__ {
struct __port__ portB;
struct __port__ portC;
struct __port__ portD;
} ;
typedef struct __io__ io;
typedef struct __io__ lcd;
typedef struct __io__ usart;
void init_peripheral( int ID, ...) {
va_list device;
io* temp;
( * temp) .portB .set = set_portB; // NOTE: dereferencing uninitialized pointer!!!
if ( ID == IO) {
io* config_io;
config_io
= va_arg ( device
, * io
) ; // ...
} else if ( ID == LCD) {
lcd * config_lcd;
config_lcd
= va_arg ( device
, * lcd
) ; // ...
} else if ( ID == USART) {
usart * config_usart;
config_usart
= va_arg ( device
, * usart
) ; // ...
}
}
int main( ) { return 0 ; }
I2luY2x1ZGUgPHN0ZGFyZy5oPgoKLyogU29tZSBkZWZpbml0aW9ucyBhbmQgZGVjbGFyYXRpb24gdG8gbWFrZSB0aGUgY29kZSB3b3JrICovCiNkZWZpbmUgSU8gCSAgICAJMDEKI2RlZmluZSBVU0FSVAkJMDIKI2RlZmluZSBMQ0QJCTAzCiNkZWZpbmUgc2V0X3BvcnRCICAgCTEKCnN0cnVjdCBfX3BvcnRfXyB7IGludCBzZXQ7IH07CnN0cnVjdCBfX2lvX18gewogICAgc3RydWN0IF9fcG9ydF9fIHBvcnRCOwogICAgc3RydWN0IF9fcG9ydF9fIHBvcnRDOwogICAgc3RydWN0IF9fcG9ydF9fIHBvcnREOwp9Owp0eXBlZGVmIHN0cnVjdCBfX2lvX18gaW87CnR5cGVkZWYgc3RydWN0IF9faW9fXyBsY2Q7CnR5cGVkZWYgc3RydWN0IF9faW9fXyB1c2FydDsKCnZvaWQgaW5pdF9wZXJpcGhlcmFsKGludCBJRCwgLi4uKSB7CiAgICB2YV9saXN0IGRldmljZTsKICAgIHZhX3N0YXJ0KGRldmljZSwgSUQpOwogICAgaW8qIHRlbXA7CiAgICAoKnRlbXApLnBvcnRCLnNldCA9IHNldF9wb3J0QjsgIC8vIE5PVEU6IGRlcmVmZXJlbmNpbmcgdW5pbml0aWFsaXplZCBwb2ludGVyISEhCiAgICAKICAgIGlmIChJRCA9PSBJTykgewogICAgICAgIGlvKiBjb25maWdfaW87CiAgICAgICAgY29uZmlnX2lvID0gdmFfYXJnKGRldmljZSwgKmlvKTsKICAgICAgICAvLyAuLi4KICAgIH0gZWxzZSBpZiAoSUQgPT0gTENEKSB7CiAgICAgICAgbGNkICpjb25maWdfbGNkOwogICAgICAgIGNvbmZpZ19sY2QgPSB2YV9hcmcoZGV2aWNlLCAqbGNkKTsKICAgICAgICAvLyAuLi4KICAgIH0gZWxzZSBpZiAoSUQgPT0gVVNBUlQpIHsKICAgICAgICB1c2FydCAqY29uZmlnX3VzYXJ0OwogICAgICAgIGNvbmZpZ191c2FydCA9IHZhX2FyZyhkZXZpY2UsICp1c2FydCk7CiAgICAgICAgLy8gLi4uIAogICAgfQogICAgdmFfZW5kKGRldmljZSk7Cn0KCmludCBtYWluKCkgeyByZXR1cm4gMDsgfQ==