Function at 0x41abf0
Capabilities:
Authenticate hmac
Contain obfuscated stackstrings
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x310
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 0xc]
mov dword [esp + 0x6c], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x15c], 0x31aaab9d
mov byte [esp + 0x160], 0x3c
mov word [esp + 0x161], 0
mov byte [esp + 0x163], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x15c]
lea esi, [ecx - 0x6b548d36]
mov edi, 0x35
sub edi, ecx
or esi, edx
not edx
or edx, edi
and edx, esi
mov esi, edx
and esi, 0xd
xor edx, 0xd
lea edx, [edx + esi*2]
inc dl
mov byte [esp + ecx + 0x15c], dl
mov edx, ecx
and edx, 1
xor edx, 0x47c63e9
and ecx, 6
sub ecx, edx
inc ecx
mov edx, ecx
and edx, 0x29
or ecx, 0x47c63e9
add ecx, edx
cmp ecx, 8
jb 0x41ac50
mov esi, dword [ebx]
movzx ecx, byte [esp + 0x15c]
test cl, cl
je 0x41accb
lea edx, [esp + 0x15d]
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], cl
inc esi
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x41acc0
mov byte [esi], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
lea ecx, [esp + 0x58]
lea edx, [esp + 0x68]
lea edi, [esp + 0x40]
mov dword [esp + 0x28], 0
push ecx
push edx
push edi
mov ecx, dword [ebp + 0x14]
push dword [ecx + 0x10]
push eax
push dword [ecx + 0xc]
call fcn.0041d260
add esp, 0x18
test al, al
je 0x41c118
mov dword [esp + 0x15c], 0x8f77656c
mov byte [esp + 0x160], 0x98
mov dword [esp + 0x161], 0
mov word [esp + 0x165], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
mov edx, ecx
and edx, 0x16
mov edi, ecx
mov ecx, eax
xor ecx, 0x5b
add ecx, edx
xor cl, byte [esp + eax + 0x15c]
add cl, 0x39
mov byte [esp + eax + 0x15c], cl
mov ecx, edi
inc eax
add ecx, 2
cmp eax, 0xb
jne 0x41ad50
movzx eax, byte [esp + 0x15c]
test al, al
je 0x41ad9b
lea ecx, [esp + 0x15d]
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x41ad90
mov byte [esi], 0
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x14c], edx
mov dword [esp + 0x148], ecx
mov dword [esp + 0x150], eax
mov dword [esp + 0x15c], 0xe2faf631
mov dword [esp + 0x160], 0xd0eeb00
mov dword [esp + 0x164], 0x271302ed
mov dword [esp + 0x168], 0x18191e1f
mov dword [esp + 0x16c], 0xf2fb25e8
mov dword [esp + 0x170], 0xedf6f402
mov dword [esp + 0x174], 0xecede2e3
mov dword [esp + 0x178], 0xe4d1191a
mov dword [esp + 0x17c], 0x1aff12ff
mov dword [esp + 0x180], 0x808eeff
mov dword [esp + 0x184], 0xe6c11cfc
mov dword [esp + 0x188], 0xc7e8e506
mov dword [esp + 0x18c], 0xfc2a02c8
mov dword [esp + 0x190], 0x3c3dfafe
mov dword [esp + 0x194], 0x37c1fa3b
mov dword [esp + 0x198], 0xc8c9cecf
mov dword [esp + 0x19c], 0x2237253f
mov dword [esp + 0x1a0], 0xd0edccd5
mov dword [esp + 0x1a4], 0xdcd33dc0
mov dword [esp + 0x1a8], 0xe1d9dedf
mov dword [esp + 0x1ac], 0xa4a5dace
mov dword [esp + 0x1b0], 0x5ab39ea7
mov dword [esp + 0x1b4], 0x939ebe9a
mov dword [esp + 0x1b8], 0xb59abdbe
mov dword [esp + 0x1bc], 0xb4b5aaab
mov dword [esp + 0x1c0], 0x52828e43
mov dword [esp + 0x1c4], 0x49bf42b3
mov dword [esp + 0x1c8], 0xb8855c87
mov dword [esp + 0x1cc], 0x8485babb
mov dword [esp + 0x1d0], 0x94818687
mov dword [esp + 0x1d4], 0x8e7b7ebf
mov dword [esp + 0x1d8], 0x88898e8f
mov dword [esp + 0x1dc], 0x7b89687d
mov dword [esp + 0x1e0], 0xaf66aa97
mov byte [esp + 0x1e4], 0xd0
mov byte [esp + 0x1e9], 0
mov dword [esp + 0x1e5], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x15c]
lea ecx, [eax + 0x1e864c6e]
xor ecx, edx
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, edx
add cl, 0xd9
mov byte [esp + eax + 0x15c], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x8e
jb 0x41af60
mov dword [esp + 0x88], 0xbc7e8e8a
mov dword [esp + 0x8c], 0x14b95b14
mov dword [esp + 0x90], 0x1e8a464
mov dword [esp + 0x94], 0x353a3b38
mov dword [esp + 0x98], 0x29ba36ab
mov dword [esp + 0x9c], 0x3501a868
mov dword [esp + 0xa0], 0x90e0f0c
mov dword [esp + 0xa4], 0x5d3a9050
mov dword [esp + 0xa8], 0xa07edb99
mov dword [esp + 0xac], 0xc9d6dea6
mov dword [esp + 0xb0], 0xcdcacbc8
mov dword [esp + 0xb4], 0xc1cecfcc
mov dword [esp + 0xb8], 0x8c4ebeba
mov dword [esp + 0xbc], 0xf64a5b24
mov dword [esp + 0xc0], 0x76fb37ba
mov dword [esp + 0xc4], 0x656a6b68
mov dword [esp + 0xc8], 0x3946143c
mov dword [esp + 0xcc], 0x7d1e3ffb
mov dword [esp + 0xd0], 0x79f5e824
mov dword [esp + 0xd4], 0xd7a7b78
mov dword [esp + 0xd8], 0x7176774c
mov dword [esp + 0xdc], 0x13e72b70
mov dword [esp + 0xe0], 0x1fdb172c
mov dword [esp + 0xe4], 0xabdf1330
mov dword [esp + 0xe8], 0x41464744
mov dword [esp + 0xec], 0x211ed414
mov dword [esp + 0xf0], 0x49c5045c
mov dword [esp + 0xf4], 0x55c48200
mov dword [esp + 0xf8], 0x51565754
mov dword [esp + 0xfc], 0xf5525350
mov dword [esp + 0x100], 0xc6afa537
mov dword [esp + 0x104], 0xa5aaaba8
mov dword [esp + 0x108], 0xddf232fc
mov dword [esp + 0x10c], 0x9ed1fba0
mov byte [esp + 0x110], 0xbc
mov word [esp + 0x115], 0
mov dword [esp + 0x111], 0
mov eax, 0x91142609
mov ecx, 0xf6
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp], ecx
movzx edi, byte [esp + eax + 0x6eebda7f]
mov edx, dword [esp]
xor edx, eax
and edx, edi
xor edx, eax
mov edi, edx
not edi
or edi, 0x2a9b41d2
lea ebx, [edx + edi]
inc ebx
mov ecx, ebx
and ecx, 2
mov edi, ebx
or ebx, 2
imul ebx, ecx
xor ecx, 2
and edi, 0xfd
imul edi, ecx
xor edx, 0xd2
add edx, ebx
add edx, edi
inc dl
mov byte [esp + eax + 0x6eebda7f], dl
mov ecx, dword [esp]
inc eax
dec ecx
cmp eax, 0x91142698
jne 0x41b140
lea eax, [esp + 0x15c]
lea edx, [esp + 0x88]
lea ecx, [esp + 0x148]
push eax
push 0x88
push edx
lea edi, [esp + 0x4c]
push edi
call fcn.0043a560
mov dword [esp + 0x144], edx
mov dword [esp + 0x140], eax
or eax, edx
je 0x41c0e0
mov dword [esp + 0x15c], 0x279c9f80
mov byte [esp + 0x160], 0x28
mov word [esp + 0x161], 0
mov byte [esp + 0x163], 0
mov eax, 0x4e99f087
movzx ecx, byte [esp + eax - 0x4e99ef2b]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x5d
mov byte [esp + eax - 0x4e99ef2b], cl
inc eax
cmp eax, 0x4e99f08f
jne 0x41b200
movzx eax, byte [esp + 0x15c]
test al, al
je 0x41b24b
lea ecx, [esp + 0x15d]
nop
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x41b240
mov byte [esi], 0
lea eax, [esp + 0x140]
lea ecx, [esp + 0x148]
push 0
push 8
push eax
push edi
call fcn.0043a560
mov dword [esp + 0x13c], edx
mov dword [esp + 0x138], eax
xor ecx, ecx
or eax, edx
je 0x41c114
mov dword [esp + 0x15c], 0x4f1010e2
mov byte [esp + 0x160], pe_nt_image_headers32
mov dword [esp + 0x161], 0
mov word [esp + 0x165], 0
xor ebx, ebx
xor ecx, ecx
nop
nop
nop
nop
nop
mov edx, ecx
not edx
mov edi, ebx
mov ebx, ecx
shr bl, 1
and bl, 1
mov eax, ecx
and eax, 9
and edx, 2
imul edx, eax
or al, 2
mul bl
mov ebx, edi
add al, al
add dl, al
mov eax, ebx
and al, 0x16
sub dl, al
movzx eax, dl
add eax, ecx
add al, 0x6b
xor al, byte [esp + ecx + 0x15c]
add al, 0xe9
mov byte [esp + ecx + 0x15c], al
inc ecx
add ebx, 2
cmp ecx, 0xb
jne 0x41b2b0
movzx eax, byte [esp + 0x15c]
test al, al
je 0x41b31b
lea ecx, [esp + 0x15d]
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x41b310
mov byte [esi], 0
lea eax, [esp + 0x138]
lea edx, [esp + 0x5c]
lea ecx, [esp + 0x40]
push 0
push 8
push eax
push edx
call fcn.00439a20
mov eax, dword [esp + 0x5c]
cmp eax, dword [esp + 0x60]
je 0x41c0ea
mov dword [esp + 0x15c], 0x6311611d
mov dword [esp + 0x160], 0x67026501
mov dword [esp + 0x164], 0x7b1f791f
mov dword [esp + 0x168], 0x7f1b7d42
mov dword [esp + 0x16c], 0x731771f8
mov dword [esp + 0x170], 0x7574
mov eax, 0x7a9de997
mov ecx, 0x69
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0xf3]
mov edi, edx
xor edi, eax
lea ebx, [eax - 0x7a9de980]
or ebx, edi
add bl, cl
add bl, bl
sub dl, bl
movzx edx, dl
add edx, ecx
add dl, 0xf7
mov byte [esp + ecx + 0xf3], dl
dec eax
inc ecx
cmp ecx, 0x81
jne 0x41b3a0
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
xor ecx, ecx
nop
nop
nop
nop
nop
movzx edx, word [eax + ecx]
movzx edi, word [esp + ecx + 0x15c]
test dx, dx
je 0x41b3f9
add ecx, 2
cmp dx, di
je 0x41b3e0
mov word [esp + 0x2e], di
mov dword [esp + 0x15c], 0x49e6e511
mov byte [esp + 0x160], 0x6c
mov dword [esp + 0x161], 0
mov word [esp + 0x165], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xec
xor cl, byte [esp + eax + 0x15c]
add cl, 0x64
mov byte [esp + eax + 0x15c], cl
inc eax
cmp eax, 0xb
jne 0x41b430
movzx eax, byte [esp + 0x15c]
test al, al
je 0x41b46b
lea ecx, [esp + 0x15d]
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x41b460
mov byte [esi], 0
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x120], ecx
cmp eax, ecx
je 0x41c0ea
xor ecx, ecx
mov dword [esp + 0x38], 0x1a8
cmp dx, word [esp + 0x2e]
je 0x41b49e
mov dword [esp + 0x38], 0x190
mov dword [esp + 0x54], 0x1b0
je 0x41b4b0
mov dword [esp + 0x54], 0x198
mov word [esp + 0x3e], dx
mov dword [esp + 0x50], 0x20
je 0x41b4c7
mov dword [esp + 0x50], 0x10
lea edi, [esp + 0x40]
jmp 0x41b4eb
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x124]
add eax, 8
cmp eax, dword [esp + 0x120]
je 0x41c0ee
mov dword [esp + 0x28], ecx
mov ecx, dword [eax]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x124], eax
mov eax, dword [eax + 4]
mov dword [esp + 4], eax
push 0x1b0
push 0
lea eax, [esp + 0x164]
push eax
call fcn.0040c8e0
add esp, 0xc
xor ebx, ebx
jmp 0x41b52d
mov ebx, dword [esp]
inc ebx
cmp ebx, 0xb
je 0x41b740
mov ecx, edi
push 0
push 0
push dword [esp + 0x5c]
lea eax, [esp + 0x168]
push eax
push dword [esp + 0x14]
push dword [esp + 0x48]
call fcn.00439880
test eax, eax
js 0x41b523
cmp byte [esp + 0x22c], 0
sete cl
xor cl, 0x31
cmp byte [esp + 0x22d], 0
mov byte [esp + 0x70], cl
sete al
xor al, 0x31
mov byte [esp + 0x71], al
cmp byte [esp + 0x22e], 0
sete al
xor al, 0x31
mov byte [esp + 0x72], al
mov eax, dword [esp + 0x38]
cmp byte [esp + eax + 0x15c], 0
sete al
xor al, 0x31
mov byte [esp + 0x73], al
mov word [esp + 0x74], 0xa
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi + eax], cl
movzx ecx, byte [esp + eax + 0x71]
inc eax
test cl, cl
jne 0x41b5b0
mov byte [esi + eax], 0
movzx ecx, byte [esp + 0x22e]
test cl, cl
jne 0x41b760
cmp byte [esp + 0x22c], 0
jne 0x41b5ef
mov edx, dword [esp + 0x19c]
or edx, dword [esp + 0x1a0]
je 0x41b760
mov dword [esp], ebx
add esi, eax
mov dword [esp + 0x88], 0x41ffe8f3
mov byte [esp + 0x8c], 0x54
lea eax, [esp + 0x8d]
mov byte [eax + 2], 0
mov word [eax], 0
mov eax, 0x884531ee
mov ecx, 0x11
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax + 0x77bace9a]
mov edx, ecx
xor edx, eax
and edx, ebx
xor edx, eax
lea ebx, [edx + 0x56a60659]
mov edi, ebx
and edi, 1
or edx, 0xfe
or ebx, 1
and ebx, edx
lea edx, [ebx + edi*2]
mov byte [esp + eax + 0x77bace9a], dl
inc eax
dec ecx
cmp eax, 0x884531f6
jne 0x41b630
movzx eax, byte [esp + 0x88]
test al, al
je 0x41b68b
lea ecx, [esp + 0x89]
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x41b680
mov byte [esi], 0
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 8], 0xff676980
mov dword [esp + 0x88], 0xc0c7c6c5
lea eax, [esp + 0x8d]
mov byte [eax + 1], 0
mov word [eax - 1], 0
xor eax, eax
lea edi, [esp + 0x40]
mov ecx, eax
add cl, 0x31
xor cl, byte [esp + eax + 0x88]
add cl, 0xb
mov byte [esp + eax + 0x88], cl
inc eax
cmp eax, 7
jne 0x41b6c0
mov eax, dword [0x44ae04]
test eax, eax
je 0x41b520
mov ecx, dword [esp + 0x88]
xor edx, edx
mov ebx, dword [0x44ae08]
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebx + edx*8], 0x3568c09b
je 0x41b713
inc edx
cmp eax, edx
jne 0x41b700
jmp 0x41b520
mov eax, dword [ebx + edx*8 + 4]
cmp eax, ecx
je 0x41b520
lea ecx, [esp + 8]
push ecx
push 0
push 1
push eax
push dword [0x44ae0c]
call fcn.0043bd80
add esp, 0x14
jmp 0x41b520
movzx ecx, byte [esp + 0x22e]
test cl, cl
jne 0x41b76a
jmp 0x41b4d0
add esi, eax
test cl, cl
je 0x41b4d0
call fcn.00404bb0
mov dword [esp + 0x34], eax
push eax
call fcn.004047e0
add esp, 4
mov dword [esp + 4], eax
mov dword [esp + 0x88], 0x1bb9c5bf
mov byte [esp + 0x8c], 0x20
lea eax, [esp + 0x8d]
mov word [eax + 4], 0
mov dword [eax], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x79
xor cl, byte [esp + eax + 0x88]
add cl, 0xa3
mov byte [esp + eax + 0x88], cl
inc eax
cmp eax, 0xb
jne 0x41b7b0
movzx eax, byte [esp + 0x88]
test al, al
je 0x41b7eb
lea ecx, [esp + 0x89]
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x41b7e0
mov byte [esi], 0
mov eax, dword [esp + 0x194]
mov edx, dword [esp + 0x198]
xor ebx, ebx
mov ecx, eax
or ecx, edx
je 0x41b850
mov ecx, edi
push 0
push 0
push 0x40
lea edi, [esp + 0x94]
push edi
push edx
push eax
call fcn.00439880
test eax, eax
js 0x41b859
xor eax, eax
movzx ecx, word [esp + 0x2e]
cmp word [esp + 0x3e], cx
sete al
lea ecx, [esp + 0x40]
mov edx, edi
push eax
push dword [esp + 8]
call fcn.0041dda0
add esp, 8
mov dword [esp], eax
jmp 0x41b860
mov dword [esp], 0
jmp 0x41b864
mov dword [esp], 0
lea edi, [esp + 0x40]
mov dword [esp + 0x88], 0x49aca4a9
mov byte [esp + 0x8c], 0x44
lea eax, [esp + 0x8d]
mov byte [eax + 4], 0
mov dword [eax], 0
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + ebx + 0x88]
mov edx, ebx
or edx, 0x10
mov eax, 0xef
sub eax, ebx
xor eax, edx
and eax, ecx
xor eax, edx
add al, 0xb0
mov byte [esp + ebx + 0x88], al
mov eax, ebx
or eax, 1
add eax, ebx
not ebx
or ebx, 1
add ebx, eax
inc ebx
cmp ebx, 0xa
jb 0x41b890
movzx eax, byte [esp + 0x88]
test al, al
je 0x41b8f0
lea ecx, [esp + 0x89]
mov ebx, dword [esp]
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x41b8e0
jmp 0x41b8f3
mov ebx, dword [esp]
mov byte [esi], 0
push dword [esp + 4]
call fcn.004049b0
add esp, 4
test eax, eax
setne cl
and cl, bl
cmp cl, 1
jne 0x41c0c6
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2b4]
mov edx, dword [esp + 0x2b8]
add eax, 0x28
adc edx, 0
mov ecx, edi
push 0
push 0
push 8
lea ebx, [esp + 0x13c]
push ebx
push edx
push eax
call fcn.00439880
test eax, eax
js 0x41bd30
mov eax, dword [esp + 0x130]
mov edx, dword [esp + 0x134]
add eax, 0x10
adc edx, 0
mov ecx, edi
push 0
push 0
push 8
lea ebx, [esp + 0x134]
push ebx
push edx
push eax
call fcn.00439880
test eax, eax
js 0x41bd30
mov eax, dword [esp + 0x12c]
mov edx, dword [esp + 0x128]
add edx, dword [esp + 0x50]
adc eax, 0
mov ecx, edi
push 0
push 0
push 0x18
lea edi, [esp + 0x7c]
push edi
push eax
push edx
call fcn.00439880
test eax, eax
js 0x41bd30
cmp byte [esp + 0x87], 0
lea eax, [esp + 0x70]
mov dword [esp + 0x30], eax
js 0x41ba9e
mov dword [esp + 8], 0xb92fbb6f
mov dword [esp + 0xc], 0xbd28bf23
mov dword [esp + 0x10], 0xb176b39c
mov dword [esp + 0x14], 0xb522b757
mov dword [esp + 0x18], 0xa946ab53
mov dword [esp + 0x1c], 0xafa8
mov eax, 0xf77730e1
mov ecx, 0xeeee61c2
nop
nop
nop
movzx edx, byte [esp + eax + 0x888cf27]
mov edi, ecx
and edi, 0xea6060be
mov ebx, eax
xor ebx, 0x75b0325f
add edi, ebx
add edi, 0x888cf1f
xor edi, edx
lea ebx, [edi - 0x4c70fbdc]
mov edx, edi
and edx, 1
add edx, edi
add edx, 0xb38f0424
mov edi, ebx
xor ebx, 1
add edx, ebx
and edi, 0xfe
sub edx, edi
mov byte [esp + eax + 0x888cf27], dl
inc eax
add ecx, 2
cmp eax, 0xf77730f9
jne 0x41ba00
movzx edi, word [esp + 8]
test di, di
je 0x41baca
lea eax, [esp + 8]
mov ecx, dword [esp + 0x30]
mov edx, ecx
mov dword [esp], ecx
jmp 0x41ba78
movzx edi, word [eax]
test di, di
je 0x41bae5
movzx ebx, word [edx]
test bx, bx
je 0x41bad7
add edx, 2
add eax, 2
mov ecx, dword [esp]
add ecx, 2
cmp bx, di
je 0x41ba96
mov dword [esp], ecx
mov edx, ecx
je 0x41ba70
lea eax, [esp + 8]
jmp 0x41ba70
mov ecx, dword [esp + 0x70]
mov edi, dword [esp + 0x74]
mov eax, ecx
or eax, edi
je 0x41bd30
mov eax, dword [esp + 0x78]
mov ebx, eax
inc ebx
mov dword [esp], ecx
jns 0x41bba3
mov eax, 0xffffffff
jmp 0x41bbaa
mov eax, dword [esp + 0x30]
lea edx, [esp + 0x88]
jmp 0x41baf9
lea ebx, [esp + 0x88]
mov edx, ebx
jmp 0x41bcfa
lea ebx, [esp + 0x88]
mov edx, ebx
mov eax, dword [esp]
test eax, eax
je 0x41bcfa
movzx edi, word [eax + 0x14]
mov ebx, edx
test di, di
je 0x41bcfa
lea ecx, [eax + 0x14]
mov dword [esp + 0x24], ecx
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp di, 0x5c
je 0x41bb3a
movzx edi, word [eax + ecx + 0x16]
add ecx, 2
test di, di
jne 0x41bb20
mov ebx, edx
jmp 0x41bcfa
mov ebx, edx
test ecx, ecx
mov edi, dword [esp + 0x24]
je 0x41bc5f
sar ecx, 1
mov eax, ecx
and eax, 3
je 0x41bbf0
mov ebx, edx
xor edx, edx
mov dword [esp + 0x11c], eax
mov edi, dword [esp + 0x24]
movzx eax, word [edi]
mov word [esp], ax
xor eax, eax
cmp word [esp], 0
setne al
lea edi, [edi + eax*2]
mov eax, dword [esp + 0x11c]
mov dword [esp + 0x24], edi
movzx edi, word [esp]
mov word [ebx], di
add ebx, 2
inc edx
cmp eax, edx
jne 0x41bb60
mov eax, ecx
sub eax, edx
lea edx, [esp + 0x88]
mov edi, dword [esp + 0x24]
jmp 0x41bbf4
lea eax, [eax*2 + 2]
push eax
call fcn.0040c860
add esp, 4
mov edx, ebx
and edx, 0xfffffffd
mov ecx, ebx
and ecx, 2
or ebx, 2
imul ebx, ecx
xor ecx, 2
imul ecx, edx
add ebx, ecx
lea ecx, [esp + 0x40]
push 0
push 0
push ebx
mov dword [esp + 0x3c], eax
push eax
push edi
push dword [esp + 0x14]
call fcn.00439880
test eax, eax
jns 0x41b9c3
jmp 0x41bd30
mov ebx, edx
mov eax, ecx
dec ecx
cmp ecx, 3
jb 0x41bc5f
nop
nop
nop
nop
nop
nop
mov dword [esp], eax
movzx eax, word [edi]
xor ecx, ecx
test ax, ax
setne cl
mov word [ebx], ax
lea eax, [edi + ecx*2]
movzx ecx, word [edi + ecx*2]
xor edx, edx
test cx, cx
setne dl
mov word [ebx + 2], cx
lea ecx, [eax + edx*2]
movzx eax, word [eax + edx*2]
xor edx, edx
test ax, ax
setne dl
mov word [ebx + 4], ax
lea eax, [ecx + edx*2]
movzx ecx, word [ecx + edx*2]
xor edx, edx
test cx, cx
setne dl
lea edi, [eax + edx*2]
mov eax, dword [esp]
mov word [ebx + 6], cx
add ebx, 8
add eax, 0xfffffffc
jne 0x41bc00
lea edx, [esp + 0x88]
mov word [ebx], 0
mov eax, dword [esp + 0x38]
cmp byte [esp + eax + 0x15c], 0
jne 0x41bcfa
mov dword [esp + 8], 0x61dd6784
mov dword [esp + 0xc], 0x5dff63f6
mov dword [esp + 0x10], 0x59c75fcd
mov dword [esp + 0x14], 0x55c15bce
mov dword [esp + 0x18], 0x51c757d8
mov word [esp + 0x1c], 0x5350
lea eax, [esp + 0x1e]
mov word [eax + 4], 0
mov dword [eax], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x19
xor cl, byte [esp + eax + 8]
add cl, 0x83
mov byte [esp + eax + 8], cl
inc eax
cmp eax, 0x1c
jne 0x41bcc0
movzx eax, word [esp + 8]
test ax, ax
je 0x41bcf5
lea ecx, [esp + 0xa]
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41bce4
mov word [ebx], 0
cmp byte [esp + 0x87], 0
mov edi, edx
jns 0x41bd19
push dword [esp + 0x30]
call fcn.0040c870
lea edi, [esp + 0x8c]
add esp, 4
cmp edi, ebx
jne 0x41be26
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 8], 0xf344f1b9
mov dword [esp + 0xc], 0xff49fd5f
mov dword [esp + 0x10], 0xfb4cf957
mov dword [esp + 0x14], 0xc77ac56d
mov dword [esp + 0x18], 0xc3c2c177
mov byte [esp + 0x1c], 0
xor eax, eax
nop
movzx edx, byte [esp + eax + 8]
mov dword [esp], edx
lea ecx, [eax - 0x403077ac]
mov edi, 0xab
sub edi, eax
xor edi, ecx
and edi, edx
xor edi, ecx
not edi
and edi, ecx
mov edx, edi
and edx, 2
mov ebx, edi
or edi, 2
imul edi, edx
xor edx, 2
and ebx, 0xbfcf887d
imul ebx, edx
add edi, ebx
xor ecx, edi
mov edx, 0x403077ab
sub edx, eax
and edx, edi
add edx, edx
sub ecx, edx
add ecx, dword [esp]
lea edx, [ecx + ecx]
mov edi, edx
or edx, 0xfd
sub edx, ecx
not edi
and edi, 2
add edx, edi
mov cl, 0x5b
sub cl, dl
mov byte [esp + eax + 8], cl
mov ecx, eax
xor ecx, 0x7ffffffe
mov edx, eax
or edx, 1
and edx, ecx
lea ecx, [eax + eax]
and ecx, 2
sub eax, ecx
lea eax, [eax + edx*2]
inc eax
cmp eax, 0x15
jb 0x41bd60
movzx eax, word [esp + 8]
lea edi, [esp + 0x88]
mov ebx, edi
test ax, ax
je 0x41be21
lea ecx, [esp + 0xa]
mov ebx, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41be10
mov word [ebx], 0
mov edx, ebx
sub edx, edi
mov ecx, edx
shr ecx, 2
mov eax, edi
mov edi, esi
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov ecx, edx
and ecx, 0xfffffffc
lea edi, [esi + ecx]
lea eax, [esp + ecx]
add eax, 0x88
mov dword [esp], edx
mov ecx, edx
shr ecx, 1
and ecx, 1
mov edx, eax
mov dword [esp + 0x24], edi
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
test bl, 1
je 0x41be74
mov ecx, dword [esp]
and ecx, 2
movzx eax, byte [eax + ecx]
mov edx, dword [esp + 0x24]
mov byte [edx + ecx], al
push 0xa
push 0xb
lea eax, [esp + 0x78]
push eax
push dword [esp + 0x10]
call fcn.0041db20
add esp, 0x10
mov dword [esp + 8], 0x1ff3ed8a
mov dword [esp + 0xc], 0xaf8e988c
mov byte [esp + 0x10], 0
mov ecx, 0x1c
mov edx, 0xe3
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, edx
and edi, 0x89
mov ebx, ecx
and ebx, 0x36
or ebx, edi
xor bl, byte [esp + ecx - 0x14]
xor bl, 0x89
add bl, 0x74
mov byte [esp + ecx - 0x14], bl
inc ecx
dec edx
cmp ecx, 0x25
jne 0x41beb0
mov ebx, dword [esp]
add esi, ebx
movzx ecx, byte [esp + 8]
test cl, cl
je 0x41befb
lea edx, [esp + 9]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], cl
inc esi
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x41bef0
mov byte [esi], 0
movzx ecx, byte [eax]
test cl, cl
je 0x41bf1b
inc eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], cl
inc esi
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x41bf10
mov byte [esi], 0xa
mov eax, dword [ebp + 0x14]
mov edi, dword [eax]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x41bf30
sar eax, 1
sar ebx, 1
lea ecx, [ebx + eax]
add ecx, 0xa
test ecx, ecx
jns 0x41bf50
mov eax, 0xffffffff
jmp 0x41bf59
add ebx, eax
lea eax, [ebx*2 + 0x14]
push eax
call fcn.0040c860
add esp, 4
movzx ecx, word [edi]
mov edx, eax
test cx, cx
je 0x41bf91
add edi, 2
mov edx, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], cx
add edx, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x41bf80
mov dword [esp + 4], eax
inc esi
mov eax, edx
mov word [edx], 0x2f
mov dword [esp + 8], 0x8fdc89fb
mov dword [esp + 0xc], 0x83098d29
mov dword [esp + 0x10], 0x873281f2
mov dword [esp + 0x14], 0x9b2e850c
mov dword [esp + 0x18], 0x9998
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 8]
lea edi, [ecx + 0xfcd122]
xor edi, edx
mov edx, 0xaa
sub edx, edi
or edx, 1
mov ebx, edi
or ebx, 0xfe
lea ebx, [ebx + edi*2]
add ebx, edx
add bl, 0xad
mov byte [esp + ecx + 8], bl
mov edx, ecx
xor edx, 0xfffffffe
or ecx, 1
and edx, ecx
add ecx, edx
cmp ecx, 0x14
jb 0x41bfd0
add eax, 2
movzx ecx, word [esp + 0x88]
test cx, cx
je 0x41c041
lea edx, [esp + 0x8a]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x41c030
mov word [eax], 0
movzx ecx, word [esp + 8]
test cx, cx
je 0x41c071
lea edx, [esp + 0xa]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x41c060
mov word [eax], 0
mov ebx, 0xffffffff
push dword [esp + 0x34]
call fcn.00405810
add esp, 4
mov edi, eax
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi + ebx + 1], 0
lea ebx, [ebx + 1]
jne 0x41c090
mov ecx, dword [ebp + 8]
push ebx
push edi
mov ebx, dword [esp + 0xc]
push ebx
call fcn.0040d140
mov dword [esp], eax
push edi
call fcn.004058a0
add esp, 4
push ebx
mov ebx, dword [esp + 4]
call fcn.0040c870
add esp, 4
lea edi, [esp + 0x40]
push dword [esp + 0x34]
call fcn.004049f0
add esp, 4
mov ecx, dword [esp + 0x28]
and cl, 1
or cl, bl
jmp 0x41b4d4
mov dword [esp + 0x28], 0
jmp 0x41c118
xor ecx, ecx
jmp 0x41c114
mov eax, dword [esp + 0x5c]
and cl, 1
test eax, eax
je 0x41c114
cmp eax, dword [esp + 0x60]
je 0x41c114
push eax
mov edi, ecx
call fcn.0040c870
mov ecx, edi
add esp, 4
mov dword [esp + 0x5c], 0
mov dword [esp + 0x28], ecx
lea ecx, [esp + 0x40]
call fcn.00438f00
mov dword [esp + 0x15c], 0x7b9a97ab
mov byte [esp + 0x160], 0x70
mov dword [esp + 0x161], 0
mov word [esp + 0x165], 0
mov eax, 0xaf1e22bd
nop
nop
movzx ecx, byte [esp + eax + 0x50e1de9f]
xor ecx, eax
mov edx, ecx
and edx, 0x8408024c
mov edi, ecx
and edi, 2
mov ebx, edi
xor ebx, 2
imul ebx, edx
or edx, 2
imul edx, edi
xor ecx, 0x9469524e
add ecx, ebx
add ecx, edx
mov edx, ecx
xor edx, 0xfe
or ecx, 1
and edx, ecx
add edx, ecx
mov byte [esp + eax + 0x50e1de9f], dl
inc eax
cmp eax, 0xaf1e22c8
jne 0x41c150
movzx eax, byte [esp + 0x15c]
test al, al
je 0x41c1cd
lea ecx, [esp + 0x15d]
mov edx, dword [ebp + 0xc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x41c1c0
jmp 0x41c1d0
mov edx, dword [ebp + 0xc]
mov byte [esi], 0
mov dword [edx], esi
mov eax, dword [esp + 0x28]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret