#include <stdio.h>

// from header 1
#pragma pack(push)
#pragma pack(1)
struct my_internal_buisiless {
	int cool_story;
	char magic;
	int another_cool_story;
};
#pragma pack(pop)

// from header 2
#pragma pack(push)
#pragma pack(2)
struct not_your_buisiness {
	char magic[2];
	float flop;
};
#pragma pack(pop)

// from header 3
struct widget {
	int blahblah;
	struct my_internal_buisiless business[4];
	struct not_your_buisiness nope[4];
};


struct struct1 {
	int element0;
	struct {
		int element0;
		char element1;
		int element2;
	} element1[4];
	struct {
		char element0[2];
		float element1;
	} element2[4];
};

void my_migthy_call(struct widget *data_for_result)
{
	data_for_result->nope[3].flop = 100.99;
}

int main(int argc, char* argv[])
{
	struct widget my_test;
	struct struct1 shit_test;
	my_migthy_call(&my_test);
	my_migthy_call(&shit_test);
	printf("My result: %f\n", my_test.nope[3].flop);
	printf("Shit result result: %f\n", shit_test.element2[3].element1);
}